chore(license): normalize SPDX headers to PMPL-1.0-or-later#81
Merged
Conversation
Source files are governed by PMPL-1.0-or-later per NOTICE; the root LICENSE and Cargo.toml license field intentionally remain MPL-2.0 as a compatibility shim for registries/tooling (documented in NOTICE and 0-AI-MANIFEST.a2ml). - Add missing SPDX headers: crates/lsm, crates/claude-client, MainActivity.kt, NativeLib.kt - Normalize stray MPL-2.0 / invalid MPL-2.0-or-later headers to PMPL-1.0-or-later: CONTRIBUTING.adoc, CHANGELOG.md, docs/tech-debt doc header, and 4 workflow files - Leave historical audit findings (docs/*audit*, tech-debt finding table) unchanged as point-in-time records https://claude.ai/code/session_01Gu1JFCZHuBtBhAWPr4sMQw
… split Make the licence statement uniform and remove all header debate so no file carries a competing/duplicate licence statement or stale MPL header-talk. MPL-2.0 now appears only inside the Palimpsest licence text itself (the permitted exception). - LICENSE: replace MPL-2.0 text with the Palimpsest (PMPL-1.0-or-later) text - Cargo.toml: license = PMPL-1.0-or-later (matches source headers + estate convention, e.g. stapeln.toml) - NOTICE: drop the MPL-vs-PMPL compatibility explanation; single PMPL notice - 0-AI-MANIFEST.a2ml: drop "unless platform requires MPL-2.0" caveat - docs/tech-debt-2026-05-26.md: correct stale MPL-2.0 licence findings to PMPL https://claude.ai/code/session_01Gu1JFCZHuBtBhAWPr4sMQw
…MPL text - docs/governance/CRG-AUDIT-2026-04-18.adoc: remove the three literal MPL-2.0 references (file inventory, merge-conflict example, and recommendation wording) while keeping each section coherent - Remove now-orphaned LICENSES/MPL-2.0.txt (no file declares MPL-2.0; the Palimpsest licence incorporates MPL by reference) MPL now appears only inside the Palimpsest licence text/explainer. https://claude.ai/code/session_01Gu1JFCZHuBtBhAWPr4sMQw
hyperpolymath
marked this pull request as ready for review
June 2, 2026 08:58
hyperpolymath
enabled auto-merge
June 2, 2026 09:04
Stand up a proof corpus so the MUST.contractile obligations (no Admitted/sorry, no removal of proofs, ABI-change-needs-proof) refer to real artefacts. Maps each obligation from issue #84 to its toolchain. - proofs/README.adoc: obligation index + toolchain split + status - proofs/tla/Lifecycle.tla: TLA+ safety spec for NeuroSymbolicSystem (no use before initialize; shutdown terminal/idempotent) — obligation 2.1 - proofs/{lean,dafny}/README.adoc: scoped placeholders for 1.1/1.3 and 1.2/0.2 - esn, lsm: #![allow(unsafe_code)] -> #![deny(unsafe_code)] (Tier 0.3). deny (not forbid) because ndarray-rand/rand_distr macros expand to an inner #[allow(unsafe_code)] that forbid rejects (E0453); deny still hard-errors on any unsafe we write. The other five crates already forbid. Note: esn/lsm have a pre-existing compile break (rand 0.9 vs 0.10 in the lock file + drifted API) unrelated to this change; filed separately. https://claude.ai/code/session_01Gu1JFCZHuBtBhAWPr4sMQw
README.adoc 551 -> 204 lines. Relocate-and-trim; no content dropped. - docs/architecture.adoc: Rust crates, Android app, components, performance, topology - docs/usage.adoc: Kotlin + Rust APIs - docs/build.adoc: prerequisites, build, model download, configure, development - docs/installation.adoc: AI-assisted install, privacy notice, troubleshooting, uninstall - README keeps overview (What This Is, Target Device, Core Purpose, Key Differentiators), a thin Installation pointer, a Documentation index, and Related Projects / RSR / Contributing / License / Citation / Contact. https://claude.ai/code/session_01Gu1JFCZHuBtBhAWPr4sMQw
…ild (#85) The workspace declared rand 0.10 + rand_distr 0.6 while the source uses the rand 0.9 API (rand::rng(), rng.random::<T>(), rng.sample, shuffle) and ndarray-rand 0.16 pulls rand 0.9 — so two rand majors resolved and RNG method resolution failed (E0277/E0599). Pinning to rand 0.9 / rand_distr 0.5 yields a single rand version. `cargo check --workspace` is now green. https://claude.ai/code/session_01Gu1JFCZHuBtBhAWPr4sMQw
This was referenced Jun 2, 2026
hyperpolymath
added a commit
that referenced
this pull request
Jun 2, 2026
…merge) (#102) ## Summary Restores neurophone to **MPL-2.0** throughout, per the canonical estate license policy ([owner directive 2026-06-02](https://github.com/hyperpolymath/), [memory: feedback_estate_license_policy_umbrella]). **Two commits:** 1. **Revert #81** — `chore(license): normalize SPDX headers to PMPL-1.0-or-later` was admin-merged in the 2026-06-02 estate sweep by mistake. It went the wrong direction (MPL→PMPL) and also conflated SPDX changes with adding new docs/proofs scaffolding. The revert restores: pre-#81 LICENSE text + LICENSES/MPL-2.0.txt + NOTICE + 19 SPDX flips. 2. **Sweep stray PMPL→MPL** — flips the remaining 118 files that already had `SPDX-License-Identifier: PMPL-1.0-or-later` from before #81 (canonical-memory-documented drift across `.kt`, AndroidManifest, `.sh` hooks, `.machine_readable/`, `.github/workflows/`, crates). Also normalises 1 invalid `MPL-2.0-or-later` identifier (CONTRIBUTING.adoc) to `MPL-2.0`. ## Why Per the canonical 5-way license matrix ([estate-license-policy-umbrella memory](file)): | Category | License | Applies to | |---|---|---| | Sole owner repos (default) | MPL-2.0 | neurophone falls here | | 007 | All Rights Reserved | — | | Shared with son | AGPL-3.0-or-later | — | | Third-party / forks | LEAVE ALONE | — | | Palimpsest carve-out | PMPL-1.0-or-later | palimpsest-license + palimpsest-plasma + consent-aware-http only | PMPL in neurophone violates the matrix. Owner directive 2026-06-02 reinforced this explicitly. ## Excluded from sweep - `LICENSES/PMPL-1.0-or-later.txt` — the PMPL license-text file itself (legitimate reference, restored by revert) - `NOTICE` — governance prose, restored to pre-#81 state by revert - `PALIMPSEST.adoc` — concept doc retained (only its own SPDX header swept to MPL-2.0) ## Cost of mis-merge — what was lost (and how to recover) Reverting #81 also dropped 4 new docs + proofs/ scaffolding that the PR had bundled in: - \`docs/architecture.adoc\` (149 lines) - \`docs/build.adoc\` (72 lines) - \`docs/installation.adoc\` (113 lines) - \`docs/usage.adoc\` (41 lines) - \`proofs/README.adoc\` + \`proofs/dafny/README.adoc\` + \`proofs/lean/README.adoc\` + \`proofs/tla/Lifecycle.tla\` These can be reintroduced cleanly in a separate, license-free PR after this lands. They were not retained in this PR to keep scope tight (license correction only). ## Test plan - [ ] grep \`SPDX-License-Identifier:.*PMPL\` returns only \`LICENSES/PMPL-1.0-or-later.txt\` + \`NOTICE\` (legitimate) - [ ] grep \`SPDX-License-Identifier:.*MPL.*or-later\` returns nothing (invalid id eliminated) - [ ] CI green (governance / licence consistency should now pass) 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Signed-off-by: hyperpolymath <6759885+hyperpolymath@users.noreply.github.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This was referenced Jun 2, 2026
hyperpolymath
added a commit
that referenced
this pull request
Jun 2, 2026
…affolding (follow-up to #102) (#120) ## Summary Restores the 8 docs+proofs files that PR #81 added but #102 had to drop while reverting #81's wrong-direction license change. Per #102's PR body: > "Reverting #81 also dropped 4 new docs + proofs/ scaffolding... These can be reintroduced cleanly in a separate, license-free PR after this lands." This is that PR. ## Files (all NEW, no edits to existing content) | File | Purpose | |---|---| | `docs/architecture.adoc` | LSM/ESN/bridge architecture (149 lines) | | `docs/build.adoc` | Build instructions (72 lines) | | `docs/installation.adoc` | Installation guide pointed-to by README (113 lines) | | `docs/usage.adoc` | Usage docs (41 lines) | | `proofs/README.adoc` | Proof corpus index | | `proofs/dafny/README.adoc` | Dafny/F* proofs subdirectory | | `proofs/lean/README.adoc` | Lean/Coq proofs subdirectory | | `proofs/tla/Lifecycle.tla` | TLA+ lifecycle obligation 2.1 (issue #84) | ## Licensing All 8 files carry \`SPDX-License-Identifier: MPL-2.0\` per the canonical estate license policy (neurophone = sole-owner repo). #81 had originally added these with PMPL stamps; this PR adds them with the correct MPL-2.0 SPDX from the start. ## Verification \`\`\`sh grep -r 'SPDX-License-Identifier' docs/architecture.adoc docs/build.adoc \\ docs/installation.adoc docs/usage.adoc proofs/ \`\`\` All 8 files report \`MPL-2.0\`. ## Test plan - [ ] CI green (no new SPDX violations) - [ ] Files render correctly (asciidoctor + TLA+ syntax) - [ ] \`docs/installation.adoc\` link from README.adoc resolves ## Why draft License sweep aftermath; owner sight on docs reintroduction before flipping to ready. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Sorts out the license/SPDX situation so the repo is internally consistent.
Key finding: the MPL-2.0 vs PMPL-1.0-or-later split was not a bug —
NOTICEand0-AI-MANIFEST.a2mldocument that source files are governed by PMPL-1.0-or-later while the rootLICENSEfile andCargo.tomllicensefield intentionally carry MPL-2.0 as a compatibility shim for registries / OSI-license-detecting tooling. This PR makes the rest of the tree consistent with that documented design rather than overriding it.Changes
crates/lsm/src/lib.rs,crates/claude-client/src/lib.rs,android/.../MainActivity.kt,android/.../NativeLib.kt.PMPL-1.0-or-later:CONTRIBUTING.adoc(was the invalidMPL-2.0-or-later)CHANGELOG.md,docs/tech-debt-2026-05-26.mddoc header.github/workflows/{rust-ci,cargo-audit,workflow-linter,hypatia-scan}.ymlIntentionally left as-is
Cargo.tomllicense = "MPL-2.0"and rootLICENSE(MPL text) — documented compat shim.docs/governance/CRG-AUDIT-2026-04-18.adoc, tech-debt finding table) — point-in-time records.Verification
grepconfirms no source file is missing an SPDX header, and the only remaining MPL-2.0 references are the intentional shim + historical records.This is the first small PR from the broader neurophone estate-compliance plan.
https://claude.ai/code/session_01Gu1JFCZHuBtBhAWPr4sMQw
Generated by Claude Code